package com.musemun.service.function;

import com.musemun.pojo.Crifo;
import com.musemun.pojo.Cropifo;
import com.musemun.pojo.Vo.*;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

/**
 * @author winner
 * @description: 文物管理接口
 * @date 2020/4/19
 */
public interface CulturalRelic {
    /**
     * 根据文物编号查询文物实体
     *
     * @param crNo 文物编号
     * @return 文物实体vo
     */
    public Map<String,Object> getCrifo(Long crNo);

    /**
     * 新增文物信息
     *
     * @param crifo 文物实体
     * @return 操作提示描述
     */
    public String insert(Crifo crifo);

    /**
     * 修改文物信息
     *
     * @param crifo 文物实体
     * @return 操作提示描述
     */
    public String update(Crifo crifo);

    /**
     * 根据文物编号删除文物信息
     *
     * @param crNo 文物编号
     * @return 操作提示描述
     */
    public String deleteByNo(Long crNo);

    /**
     * 根据文物名称删除文物信息
     *
     * @param crName 文物名称
     * @return 操作提示描述
     */
    public String deleteByName(String crName);

    /**
     * 根据文物收储位置删除文物信息
     *
     * @param crAddr 文物收储位置
     * @return 操作提示描述
     */
    public String deleteByAddr(String crAddr);

    /**
     * 根据文物状态获取文物列表
     *
     * @param crState 文物状态
     * @return 文物列表vo
     */
    public CrifoListVo getListByStatus(String crState);

    /**
     * 获取下拉列表
     *
     * @return 下拉列表vo
     */
    public DropDownListVo getDownList();

    /**
     * 无条件分页查询
     *
     * @param pageNum  页数号  默认为1
     * @param pageSize 页条数  默认为10
     * @return 文物分页查询结果
     */
    public Object getUnList(Integer pageNum, Integer pageSize);

    /**
     * 有条件分页查询
     *
     * @param pageNum        页数号  默认为1
     * @param pageSize       页条数  默认为10
     * @param combineQueryVo 组合查询对象
     * @param sort           是否排序
     * @return 文物分页查询结果
     */
    public Object getList(Integer pageNum, Integer pageSize, CombineQueryVo combineQueryVo, Boolean sort);

    /**
     * 获取所有的文物信息
     *
     * @return 文物列表vo
     */
    public Map<String, Object> list();

    /**
     * 查询所有操作记录
     *
     * @return 操作记录列表vo
     */
    public CropifoListVo selectCrop();

    /**
     * 查询要导出的流动表
     *
     * @return
     */
    public List<CropifoVo> excelExport();

    /**
     * 时间段+操作类型 查询所有操作记录
     *
     * @param cropQueryVo 查询对象
     * @return 操作记录列表vo
     */
    public CropifoListVo selectCropByTime(CropQueryVo cropQueryVo);


    /** 流动表删除记录
     * @param cropifo
     * @return 操作性描述
     */
    public String deleteByCrop(Cropifo cropifo);

    /**修改状态为出库
     * @return 操作性描述
     */
    public String updateStatus(Long crNo,  String crWarehouse,  String crAddr,  int number);
}
